#pragma once

#include <QObject>
#include "paneltabla.h"
#include "dialogo.h"

class TABLAS_EXPORT EditorDatos : public QObject
{
    Q_OBJECT
public:
    EditorDatos(QWidget* ventanaPadre);
    virtual ~EditorDatos();

    bool mostrarDialogo(const QString& titulo, bool edicion, int tipoDialogo = -1);
    void setPanelTabla(PanelTabla* panelTabla);
    void inicializarParaEdicion();
    void inicializarParaSeleccion();

    virtual QString getIdentificadorDialogo(bool edicion) = 0;

    void mostrarError(const QString mensaje);

protected:
    virtual void prepararTabla(PanelTabla* panelTabla, bool edicion) = 0;

protected slots:
    virtual void nuevo() = 0;
    virtual void anadir() = 0;    
    virtual void modificar() = 0;
    virtual void copiar() = 0;
    virtual void eliminar() = 0;
    virtual void subir() = 0;
    virtual void bajar() = 0;
    virtual void actualizar() = 0;
    virtual void seleccionado() = 0;

protected:
    Dialogo* dialogo;
    PanelTabla* panelTabla;
    QWidget* ventanaPadre;
};
